`include "common.svh"
/* verilator lint_off UNUSEDSIGNAL */
module bpu_test #(
    parameter BW = 1
) (
    input clk,
    input rst,

    input i_valid,
    output i_ready,
    input [`WORD_BITS-1:0] i_pc,

    input update_valid,
    input [`WORD_BITS-1:0] update_pc,

    input BranchType update_branch_type,
    input update_taken,
    input [`WORD_BITS-1:0] update_target,
    input update_ras_valid,
    input [`RAS_AW-1:0] update_ras_pointer,
    input [`WORD_BITS-1:0] update_ras_top,
    input [1:0] update_bi_cnt,

    output o_valid,
    output o_res_valid,
    output BranchType o_res_branch_type,
    output o_res_taken,
    output [`WORD_BITS-1:0] o_res_target,
    output o_res_ras_valid,
    output [`RAS_AW-1:0] o_res_ras_pointer,
    output [`WORD_BITS-1:0] o_res_ras_top,
    output [1:0] o_res_bi_cnt,
    output [BW-1:0] o_res_offset,
    output o_res_multi_branch

);


  BPU_Res update_res;
  BPU_Res o_res;


  assign update_res.branch_type = update_branch_type;
  assign update_res.taken = update_taken;
  assign update_res.target = update_target;
  assign update_res.ras_valid = update_ras_valid;
  assign update_res.ras_pointer = update_ras_pointer;
  assign update_res.ras_top = update_ras_top;
  assign update_res.bi_cnt = update_bi_cnt;

  assign o_res_branch_type = o_res.branch_type;
  assign o_res_taken = o_res.taken;
  assign o_res_target = o_res.target;
  assign o_res_ras_valid = o_res.ras_valid;
  assign o_res_ras_pointer = o_res.ras_pointer;
  assign o_res_ras_top = o_res.ras_top;
  assign o_res_bi_cnt = o_res.bi_cnt;



  bpu #(BW) inst_bpu (
      .i_pc(i_pc),
      .update_pc(update_pc),
      .*
  );

endmodule
